﻿function getCtrlBoxPanel() {
	var panel = new Ext.Panel({
				height : 147,
				layout : 'fit',
				region : 'south',
				split : true
			});

	function makePanel() {
		return new Ext.Panel({
					border : false,
					autoScroll : true,
					bodyStyle : 'text-align:center',
					bodyCssClass : 'ctrlbox',
					layout : 'table',
					layoutConfig : {
						columns : 2
					}
				});
	}

	function makeBtns() {
		return {
			login : new Ext.Button({
						text : '<pre> 登　录 </pre>',
						iconCls : 'login-image',
						scale : 'large',
						handler : function() {
							showLogin();
						}
					}),
			reg : new Ext.Button({
						text : '<pre> 注　册 </pre>',//'<pre>校外注册</pre>',
						iconCls : 'reg-image',
						scale : 'large',
						disabled : !sys.settings.openOutsideReg,
						handler : function() {
							showReg();
						}
					}),
			status : new Ext.Button({
						text : '<pre>在线状态</pre>',
						iconCls : 'status-image',
						scale : 'large',
						handler : function() {
							showStatusList();
						}
					}),
			ranklist : new Ext.Button({
						text : '<pre> 排　名 </pre>',
						iconCls : 'ranklist-image',
						scale : 'large',
						handler : function() {
							showRanklist();
						}
					}),
			contest : new Ext.Button({
						text : '<pre> 比　赛 </pre>',
						iconCls : 'contest-image',
						scale : 'large',
						handler : function() {
							showContest();
						},
						disabled: true
					}),
			CourseDesign : new Ext.Button({
						text : '<pre>课程设计</pre>',
						iconCls : 'coursedesign-image',
						scale : 'large',
						handler : function() {
							showCourseDesignList();
						}
					}),
			// help : new Ext.Button({
			// text : '<pre> 帮 助 </pre>',
			// iconCls : 'help-image',
			// scale : 'large',
			// disabled : true
			// }),
			datastruct : new Ext.Button({
						text : '<pre>数据结构</pre>',
						iconCls : 'datastruct-image',
						scale : 'large',
						handler : function() {
							if (!sys.dataStruct)
								gotoDS();
						}
					}),
			userinfo : new Ext.Button({
						text : '<pre>我的资料</pre>',
						iconCls : 'userinfo-image',
						scale : 'large',
						handler : function() {
							showUser(sys.user.username);
						}
					}),
			logout : new Ext.Button({
						text : '<pre> 注　销 </pre>',
						iconCls : 'logout-image',
						scale : 'large',
						handler : function() {
							doLogout();
						}
					}),
			// editinfo : new Ext.Button({
			// text : '<pre>修改资料</pre>',
			// iconCls : 'editinfo-image',
			// scale : 'large',
			// handler : function() {
			// editUser(sys.user.username);
			// }
			// }),
			editpsw : new Ext.Button({
						text : '<pre>更改密码</pre>',
						iconCls : 'password-image',
						scale : 'large',
						handler : function() {
							editPassword(sys.user.username);
						}
					}),
			// mystatus : new Ext.Button({
			// text : '<pre>我的提交</pre>',
			// iconCls : 'mysubmit-image',
			// scale : 'large',
			// handler : function() {
			// showStatusList({
			// username : sys.user.username
			// });
			// }
			// }),
			mystatistics : new Ext.Button({
						text : '<pre>我的统计</pre>',
						iconCls : 'statistics-image',
						scale : 'large',
						handler : function() {
							showUserStatistics(sys.user.username);
						}
					}),
			backup : new Ext.Button({
						text : '<pre>备份代码</pre>',
						iconCls : 'backup-image',
						scale : 'large',
						handler : function() {
							backupCode(sys.user.username);
						}
					}),
			mailbox : new Ext.Button({
						text : '<pre> 信　箱 </pre>',
						iconCls : 'mail-image',
						scale : 'large',
						handler : function() {
							showMsgBox(sys.user.username);
						}
					}),
			god : new Ext.Button({
						text : '<pre>管理模式</pre>',
						iconCls : 'god-image',
						scale : 'large',
						handler : function() {
							becomeGod();
						}
					}),
			ungod : new Ext.Button({
						text : '<pre>普通模式</pre>',
						iconCls : 'ungod-image',
						scale : 'large',
						handler : function() {
							becomeUnGod();
						}
					}),
			settings : new Ext.Button({
						text : '<pre>系统设置</pre>',
						iconCls : 'settings-image',
						scale : 'large',
						handler : function() {
							editSettings();
						}
					}),
			userlist : new Ext.Button({
						text : '<pre>用户管理</pre>',
						iconCls : 'userlist-image',
						scale : 'large',
						handler : function() {
							showUserList();
						}
					}),
			onlinejudge : new Ext.Button({
						text : Ext.isIE
								? '<pre>ＯＪ系统</pre>'
								: '<pre>O J 系统</pre>',
						iconCls : 'onlinejudge-image',
						scale : 'large',
						handler : function() {
							gotoACM();
						}
					}),
			discuss : new Ext.Button({
						text : '<pre> 讨　论 </pre>',
						iconCls : 'discuss-image',
						scale : 'large',
						handler : function() {
							showDiscussList();
						}
					})
		};
	}

	onUpdate();
	panel.updateButtons = onUpdate;
	return panel;

	function onUpdate() {
		panel.removeAll(true);
		var newpanel = makePanel();
		var btnset = makeBtns();
		if (sys.dataStruct == false) { // OJ系统
			if (sys.guest) // 未登录
				newpanel.add([btnset.login, btnset.reg, btnset.status,
						btnset.ranklist, btnset.contest, btnset.datastruct]);
			else { // 登录后
				newpanel.add([btnset.userinfo, btnset.editpsw, btnset.status,
						btnset.ranklist, btnset.mystatistics, btnset.backup,
						btnset.discuss, btnset.mailbox, btnset.contest]);
				if (sys.god) // 上帝模式
					newpanel.add([btnset.datastruct, btnset.userlist,
							btnset.settings, btnset.ungod]);
				else if (sys.user.admin) // 管理员
					newpanel.add([btnset.datastruct, btnset.god]);
				newpanel.add(btnset.logout);
			}
		} else { // 数据结构平台
			if (sys.guest)
				newpanel.add([btnset.login, btnset.onlinejudge,
						btnset.CourseDesign, btnset.reg]);
			else {
				newpanel.add([btnset.userinfo, btnset.logout,
						btnset.editpsw, btnset.mailbox, btnset.onlinejudge,
						btnset.CourseDesign]);
				
				if (sys.user.admin) {
					newpanel.add([btnset.settings, btnset.userlist]);
				}
				if (sys.god)
					newpanel.add([btnset.ungod]);
				if (sys.god || sys.teacher)
					newpanel.add([btnset.settings, btnset.userlist]);
				else if (sys.user.admin)
					newpanel.add(btnset.god);
					
			}
		}
		panel.add(newpanel);
		if (sys.guest && sys.dataStruct)
			panel.setHeight(98);
		else if (sys.guest)
			panel.setHeight(147)
		else if (window.screen.height <= 600)
			panel.setHeight(195);
		else if (sys.dataStruct)
			panel.setHeight(Math.ceil(newpanel.items.length / 2) * 49 - 2);
		else
			panel.setHeight(Math.ceil(newpanel.items.length / 2) * 49 - 2);
		panel.doLayout();
		if (panel.ownerCt)
			panel.ownerCt.doLayout();
	}
}

function refreshCtrlBox() {
	var panel = ui.ctrlBox;
	panel.updateButtons();
}

function doLogout() {
	if (sys.guest)
		return;
	confirmx('您确定要注销吗？<br />' + '注销后页面会被重新刷新。', function() {
				ajax({
							url : url.doLogout,
							success : function() {
								location.reload();
							}
						});
			});
}

function becomeGod() {
	if (sys.guest || !sys.user.admin)
		return;
	confirmx('您确定要启用管理模式吗？<br />' + '启用管理模式后，将可对系统进行管理，<br />'
					+ '但您所提交的代码都不会被统计和显示，<br />' + '启用后页面会被重新刷新。', function() {
				ajax({
							url : url.becomeGod,
							success : function() {
								// alert("不是你们拣选了我，是我拣选了你们，并且分派你们去结果子，"
								// + "叫你们的果子常存。使你们奉我的名，无论向父求什么，他就赐给你们。\n" + ' ——
								// 约翰福音 15:16');
								location.reload();
							}
						});
			});
}
function becomeUnGod() {
	if (sys.guest || !sys.user.admin)
		return;
	confirmx('您确定要换回普通模式吗？<br />' + '普通模式权限与普通用户一样，<br />' + '换回后页面会被重新刷新。',
			function() {
				ajax({
							url : url.becomeUnGod,
							success : function() {
								location.reload();
							}
						});
			});
}

function gotoACM() {
	window.open("http://acm.hfut.edu.cn/OnlineJudge/");
}
function gotoDS() {
	window.open("http://acm.hfut.edu.cn/DataStruct/");
}
